home *** CD-ROM | disk | FTP | other *** search
/ Stone Design / Stone Design.iso / Stone_Friends / Wave / WavesWorld / Documentation / WW3DKit / stuff / README < prev    next >
Encoding:
Text File  |  1995-03-22  |  3.4 KB  |  69 lines

  1. send mail to wave@media.mit.edu with any questions.
  2.  
  3. Thi directory contains the source for my 3DKit.  This version is based
  4. on top of NeXT's, but it's been designed to port to OpenGL and Tk.
  5. Hence, it's a bit different than your normal NeXT-like kit.
  6.  
  7. From a UI perspective, there's only one object of interest: the
  8. WW3DWell.  The idea behind the WW3DWell is to encapsulate the
  9. functionality you would want when integrating 3D into an arbitrary
  10. app.  It should support photorealistic rendering, direct manipulation,
  11. browsing and inspecting of the parts of the shape hiearchy, drag and
  12. drop, etc.  I think it works pretty well, but there are still parts
  13. that aren't done.
  14.  
  15. From a programmer's perspective, the most obvious classes are
  16. WW3DShape and the subclasses of RIBCommand.  One of my concerns in
  17. designing this kit was trying to come up with a way to enumerate all
  18. possible classes beforehand, so that users wouldn't need to subclass.
  19. I have various nefarious reasons for this.  This is in direct contrast
  20. to the N3DKit's style, wherein you subclass N3DShape to draw your
  21. particular kind of geometry.  In my 3DKit, their is only one subclass
  22. of N3DShape: WW3DShape.  a WW3DShape has a list of ribCommands, each
  23. of which is a subclass of RIBCommand.  For each appropriate Ri*()
  24. routine in the RenderMan interface, I've made a subclass of
  25. RIBCommand, each of which knows how to do a set of things, like render
  26. themselves and calculate their bounding box.  When you tell a
  27. WW3DShape to render itself, it in turn just tells all of its
  28. ribCommands to render themselves.  This is cool because you can parse
  29. a rib file into this sort of shape hierarchy, interact with it, and
  30. get the same rib file out the back end, including transformations.
  31. This is pretty hard to do any other way.
  32.  
  33. The main coolness of this kit, though, is the fact that it offers the
  34. programmer a complete time-based modeling language based on tcl, the
  35. tool command language.  For more info on tcl, look in ../tcl/doc, read
  36. the newsgroup comp.lang.tcl, ftp to sprite.berkeley.edu and pick up
  37. the Postscript pre-print of the forthcoming tcl book from
  38. Addison-Wesley.
  39.  
  40. Anyway, I've added a complete RenderMan binding to tcl, along with a
  41. few interesting commands (the most interesting being EveCmd and
  42. ApplyToCTM).  I haven't figured out the best way to document this yet,
  43. so y'all should take a look at the code and let me know what's really
  44. opaque.
  45.  
  46. This kit isn't finished yet, but I am interested in feedback.
  47.  
  48. More Info
  49. ---------
  50. The real power of these two WavesWorld palettes can be seen when you
  51. combine them to start building what I call "malleable media".  This is
  52. really one of the ideas from my PhD, and it's one that I'm very
  53. excited about.  The basic idea is this:
  54.  
  55. clip art is dead; it's static.  If someone gives you a piece of 2D
  56. clip art as an EPS, the best you can do is toss it in your
  57. illustration; maybe you can scale it or rotate it, but that's about
  58. it.  What you really want is the Virtuoso/Illustrator/Create file, so
  59. you can interact with it.
  60.  
  61. In the same way, a RIB file is pretty dead.  You can extract shape
  62. hierarchy info from it, but what you really want is a modeling
  63. language, with variables, looping constructs, procedures and dynamic
  64. constraints.  Assuming you design a modeling language, you then want
  65. to write your clip objects in it.  You obviously want it to reduce
  66. itself to RIB eventually, but you want to be able to easily attach UI
  67. elements to manipulate variables inside a model program before it gets
  68. reduced to RIB.
  69.